<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" lang="zh" xml:lang="zh">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>支持材料: 组件体系结构</title>
<meta content="SupportingMaterial" name="uma.type">
<meta content="use_component_architectures" name="uma.name">
<meta content="组件体系结构" name="uma.presentationName">
<meta name="element_type" content="other">
<meta content="description" name="filetype">
<meta name="role" content="">
<link type="text/css" href="./../../../css/default.css" rel="StyleSheet">
<script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageResource.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageSubSection.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/ContentPageToolbar.js"></script><script language="JavaScript" type="text/javascript" src="./../../../scripts/contentPage.js"></script><script language="JavaScript" type="text/javascript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=[{view: "view:_LVCagP5WEdmAzesbYywanQ", path: ["_LVCagP5WEdmAzesbYywanQ", "_zRigkAILEdq-_NKqZM1EhA", "_IY0NkAISEdqTna4sZVFRow", "_ydt62NnmEdmO6L4XMImrsA", "1.2991947604188333E-306"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_kC0pcN7GEdm8G6yT7-Wdqw", "_ydt62NnmEdmO6L4XMImrsA", "1.2991947604188333E-306"]}, {view: "view:_FCx1oN7CEdmsEI4YDGX2ag", path: ["_FCx1oN7CEdmsEI4YDGX2ag", "_jD8dUAIbEdqEutyfYo0quQ", "__yoNMDIcEdqDs_9ORT1Rig", "1.2991947604188333E-306"]}];
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="1.2991947604188333E-306"></div>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td nowrap="true" class="pageTitle">组件体系结构</td><td width="100%">
<div id="contentPageToolbar" align="right"></div>
</td>
</tr>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td class="pageTitleSeparator"><img height="1" title="" alt="" src="./../../../images/shim.gif"></td>
</tr>
</table>
<div class="overview">
<table cellpadding="0" cellspacing="0" border="0" width="97%">
<tr>
<td width="50"><img title="" alt="" src="./../../../core.base_rup/guidances/supportingmaterials/resources/pract_dgm32.gif"></td><td>
<table cellpadding="0" cellspacing="0" border="0" class="overviewTable">
<tr>
<td valign="top">因为组件体系结构基于独立的、可替换的模块组件，因此开发和使用组件体系结构的实践有助于管理复杂性并促进复原。</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">关系</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<th scope="row" class="sectionTableHeading">相关元素</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.base_rup/disciplines/rup_analysis_design_discipline_29760231.html" guid="_ydt62NnmEdmO6L4XMImrsA">分析和设计</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">主要描述</div>
<div class="sectionContent">
<table cellpadding="0" cellspacing="0" border="0" class="sectionTable">
<tr valign="top">
<td class="sectionTableSingleCell"><a id="Top" name="Top"></a> 
<p align="center">
    <img height="187" alt="组件体系结构图像" src="./../../../core.base_rup/guidances/supportingmaterials/resources/softarch.gif" width="312" />
</p>
<p class="picturetext">
    具有多个<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/layer_F3814B38.html" guid="_yMbWgNnmEdmO6L4XMImrsA">层</a>的<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/component-based_development_cbd_1E319741.html" guid="_yCcUGdnmEdmO6L4XMImrsA">基于组件</a>的<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/architecture_122F321F.html" guid="_x7SjMNnmEdmO6L4XMImrsA">体系结构</a>
</p>
<h2>
    <a id="What are Component Architectures" name="What are Component Architectures">组件体系结构有什么意义</a>？
</h2>
<p>
    组件体系结构是一种基于可替换组件（如<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/concepts/component_A2E2B3B1.html" guid="3.524150980437479E-305">概念：组件</a>中所述）的体系结构。因为组件体系结构基于独立的、可替换的模块组件，所以它们有助于控制复杂性并支持反复使用。
</p>
<h2>
    <a id="Architectural Emphasis" name="Architectural Emphasis">体系结构重点</a>
</h2>
<p>
    用例在整个生命周期内自始至终推动了 Rational Unified Process（RUP），但设计活动则围绕了系统<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/architecture_122F321F.html" guid="_x7SjMNnmEdmO6L4XMImrsA">体系结构</a>（对于软件密集型系统，是软件体系结构）的概念。 流程早期迭代（多数在精化阶段）主要关注的是生成和验证<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/software_architecture_2B63D9D.html" guid="_yV0jFdnmEdmO6L4XMImrsA">软件体系结构</a><i>，</i>它在初始开发周期采用可执行体系结构原型的形式，该体系结构原型在以后的迭代中逐渐演化为最终的系统。
</p>
<p>
    通过可执行体系结构，我们打算部分实施为了演示所选系统功能和属性（尤其是满足非功能需求的）而构造的系统。可执行体系结构用于降低与性能、吞吐量、容量、可靠性和其他“能力”相关的风险，这样就可以可靠地在<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/termdefinitions/construction_2AA70F9.html" guid="_yEPD3dnmEdmO6L4XMImrsA">构造阶段</a>添加系统的完整功能，而无损坏之虞。
</p>
<p>
    关于体系结构（具体地说，是软件体系结构）概念的简介以及该概念为何至关重要的说明，请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/concepts/software_architecture_4269A354.html" guid="3.066252221588648E-305">概念：软件体系结构</a>。
</p>
<p>
    RUP 提供了一种讲究方法的、系统的方式来设计、开发和验证体系结构。我们为围绕多体系结构视图概念的体系结构描述，以及为捕获体系结构风格、设计规则和约束提供了模板。<a class="elementLinkWithUserText" href="./../../../core.base_rup/capabilitypatterns/analysis_design_49725AC4.html" guid="{002674F9-6511-4D15-8623-B761D8C48986}">分析与设计</a>规程包含旨在确定体系结构约束和重要体系结构元素的具体活动，以及关于如何选择体系结构的指导信息。管理流程显示了在计划早期迭代时如何考虑到体系结构的设计以及解决主要技术风险。关于进一步信息，请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/capabilitypatterns/project_management_FC6669AF.html" guid="{EA0C1D32-E39A-4D96-B956-E178DB776A96}">项目管理</a>规程以及与<a class="elementLinkWithUserText" href="./../../../core.base_rup/roles/rup_software_architect_DB0BF177.html" guid="{4AC346F0-E6FC-4D2C-8410-2EDF8DDDC91D}">角色：软件设计人员</a>相关联的所有活动。
</p>
<p>
    体系结构的重要性在于几个原因：
</p>
<ul>
    <li>
        它使您可以获得并保留对项目的灵巧控制，控制其复杂性并维护系统完整性。
    </li>
</ul>
<blockquote>
    <p>
        复杂的系统不仅仅是其组成部分的简单相加；也不仅仅是一连串小的独立战术决策。 它必须采用某种统一、一致的结构来系统地组织这些组成部分，并且它必须提供关于如何发展系统的精确规则，而不会使其复杂性“膨胀”到超出人类的理解。
    </p>
    <p>
        体系结构通过建立一组公共引用和一个用以讨论设计问题的公共词汇表，确立了在整个项目范围内改进沟通和理解的方式。
    </p>
</blockquote>
<ul>
    <li>
        它是大规模重用的有效基础。
    </li>
</ul>
<blockquote>
    <p>
        通过阐明主要组件和它们之间的关键接口，体系结构使您可以实现重用，包括内部重用（确定公共部分）和外部重用（合并完备的开包即用组件）。但是，它也允许进行更大规模的重用：在着重于共同领域中不同功能的产品线环境中重用体系结构本身。
    </p>
</blockquote>
<ul>
    <li>
        它为项目管理提供了基础。
    </li>
</ul>
<blockquote>
    <p>
        计划和人员配备是根据主要组件来组织的。 基础结构决策由一个小而团结的体系结构团队采纳；不公布这些决策。开发分给几个小团队来执行，每个团队都负责系统的一部分或几部分。
    </p>
</blockquote>
<h2>
    <a id="Component-Based Development (CBD)" name="Component-Based Development (CBD)">基于组件的开发</a>
</h2>
<p>
    基于组件的开发是常规应用程序开发的变体，其中：
</p>
<blockquote>
    <ul>
        <li>
            应用程序是<b>分散的可执行组件构建而成</b>，这些组件可能由不同的团队<b>相互之间相对独立地开发的</b>。在 RUP 中它们称为“组合组件”。关于更详细的定义，请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/concepts/component_A2E2B3B1.html" guid="3.524150980437479E-305">概念：组件</a>。
        </li>
        <li>
            应用程序可通过只升级构成应用程序的某些组合组件来进行<b>较小幅度地升级</b>。
        </li>
        <li>
            组合组件可由多个应用程序共享，为<b>复用</b>创造机会，但也产生了<b>项目之间的依赖关系</b>。
        </li>
        <li>
            虽然与“基于组件”关系不大，但基于组件的应用程序往往是<b>分布式的</b>。
        </li>
    </ul>
</blockquote>
<p>
    组合组件的生成有以下原因：
</p>
<ul>
    <li>
        在定义非常模块化的体系结构时，您确定、分离、设计、开发和测试结构良好的组件。 这些组件可以分别测试和逐渐集成，以构成整个系统。
    </li>
    <li>
        而且，可以将其中一些组件开发为可重用的组件，尤其是那些对大范围的公共问题提供公共解决方案的组件。这些可重用的组件（可能不仅仅是实用程序或类库的集合）形成了在组织内重用的基础，提高了整体软件生产率和质量。
    </li>
    <li>
        最近，一些商业运作成功的组件基础结构（例如 CORBA、Internet、ActiveX、JavaBeans、.NET 和 J2EE）的出现触发了一整个针对各领域的开包即用组件的行业，使您可以购买和集成组件，而不是全部自行开发。
    </li>
</ul>
<p>
    上述列表的第一点采用了旧的模块化和封装概念，使这些面向对象技术的底层概念前进了一步。该列表中的最后两点将软件开发从一次编程一行转换到通过组合组件来组成软件。
</p>
<p>
    <a id="XE_component-based_development_(CBD)__as_a_feature_in_the_Unified_Process" name="XE_component-based_development_(CBD)__as_a_feature_in_the_Unified_Process" class="index" key="基于组件的开发（component-based development，CBD）" text="作为 Unified Process 中的功能"></a>RUP 以这些方式支持基于组件的开发：
</p>
<ul>
    <li>
        迭代法允许您循序渐进地确定组件，并决定开发哪些组件、重用哪些组件以及购买哪些组件。
    </li>
    <li>
        关注软件组件，使您可以清楚地阐述结构（组件以及它们的集成方式），包括它们交互的基础机制和模式。这反过来支持项目管理的计划方面，因为组件相关性可以帮助确定哪些组件可以同时开发，以及哪些要按顺序开发。<br />
    </li>
    <li>
        在分析与设计期间使用诸如包、子系统和层之类的概念，以组织组件和指定接口。
    </li>
    <li>
        先对组件组织测试，然后逐渐对较大组的集成组件组织测试。
    </li>
</ul>
<p>
    关于组件的更多信息，请参阅<a class="elementLinkWithUserText" href="./../../../core.base_rup/guidances/concepts/component_A2E2B3B1.html" guid="3.524150980437479E-305">概念：组件</a>。
</p><br />
<br /></td>
</tr>
</table>
</div>
<table cellpadding="0" cellspacing="0" border="0" class="copyright">
<tr>
<td class="copyright"><p>
    &copy; &nbsp;Copyright IBM Corp.&nbsp;1987, 2006. &nbsp;All Rights Reserved.
</p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script language="JavaScript" type="text/javascript">
				contentPage.onload();
			</script>
</html>
